/*
 * Copyright 2014 Щекотова Ангелина Александровна.
 * Этот файл — часть J4JClientServer Framework
 * J4JClientServer Framework - свободная программа: вы можете перераспространять ее и/или изменять
 * ее на условиях Меньшей Стандартной общественной лицензии GNU в том виде, в каком
 * она была опубликована Фондом свободного программного обеспечения; либо
 * версии 3 лицензии, либо (по вашему выбору) любой более поздней версии.
 *
 * J4JClientServer Framework распространяется в надежде, что она будет полезной,
 * но БЕЗО ВСЯКИХ ГАРАНТИЙ; даже без неявной гарантии ТОВАРНОГО ВИДА
 * или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННЫХ ЦЕЛЕЙ. Подробнее см. в Меньшей Стандартной
 * общественной лицензии GNU.
 *
 * Вы должны были получить копию Меньшей Стандартной общественной лицензии GNU
 * вместе с этой программой. Если это не так, см.
 * <http://www.gnu.org/licenses/>.
 */

package ru.java4java.ClientServerFramework.impl;

import ru.java4java.utils.ByteUtils;

import java.io.*;

/**
 * Используется для получения и отправки данных.
 * Проще говоря, это контейнер для набора байт.
 */
public class Packet implements Serializable {

    private static final long serialVersionUID = 1000000000000000000L;

    private byte[] data;

    /**<pre>
     * Конструктор
     * </pre>
     * @param data массив байт (byte[])
     */
    public Packet(byte[] data) {
        this.data = data != null ? data : new byte[]{};
    }

    /**<pre>
     * Возвращает ссылку на массив байт
     * </pre>
     * @return массив байт (byte[])
     */
    public byte[] getData() { return data; }

    /**<pre>
     * Устанавливает ссылку на массив байт
     * </pre>
     * @param data массив байт (byte[])
     */
    public void setData(byte[] data) { this.data = data; }

    /**
     * Сравнивает текущий пакет с переданным пакетом по массиву байт.
     * @param packet {@link Packet}
     * @return true/false
     */
    public boolean equals(Packet packet) {
        if (packet == null || (data.length != packet.data.length)) {
            return false;
        }
        for (int i = 0; i < data.length; i++) {
            if (data[i] != packet.data[i]) return false;
        }
        return true;
    }

}
